Waveform Accumulation and Storage in Alternating Memory Banks

ABSTRACT

System and method for hardware implemented accumulation of waveform data. A digitizer is provided that includes first and second memory banks. A first waveform is stored in chunks alternating between successive buffers in the first and second memory banks, and concurrently, the first and second chunks may be transferred to first and second FIFOs, respectively, which may be accumulated with respective first and second chunks of a second waveform into the first and second memory banks. This process may be repeated for respective successive pairs of the first and second waveforms, where the first and second memory banks and FIFOs are used in an alternating manner, and further, to accumulate additional waveforms, where previously stored (and accumulated) waveform data are accumulated chunkwise with successive additional waveform data, and where at least some of the accumulation is performed concurrently with waveform data transfers to and from the memory banks and FIFOs.

PRIORITY DATA

This application claims benefit of priority to U.S. ProvisionalApplication Ser. No. 61/700,818, titled “Hardware Implemented ChunkBased Accumulation of Waveform Data”, filed Sep. 13, 2012, whoseinventors were Anita L. Salmon, Jeff A. Bergeron, Rafael Castro Scorsi,and Andrew C. Thomson, and which is hereby incorporated by reference asthough fully and completely set forth herein.

FIELD OF THE INVENTION

The present invention relates to data acquisition, and more specificallyto hardware implemented chunk based accumulation of multiple digitalwaveforms.

DESCRIPTION OF THE RELATED ART

Data acquisition is a critical part of many processes and applications,and digital acquisition of analog waveforms, in which analog waveformdata are digitized (by a digitizer) and stored, is a common feature.

Some prior art digitizers offer on-board accumulation of multiplewaveforms. FIG. 1 is a high level block diagram of a digitizer,according to the prior art. As shown, this particular device is for usein PCI systems, and is implemented via programmable hardware,specifically, a field programmable gate array (FPGA) implementingvarious components. Note that while some specific exemplary embodimentsare described herein as using FPGAs, in general, any type ofprogrammable hardware element(s) may be used as desired.

As may be seen, analog data are received and converted to digital formby analog/digital converters (ADC) on the left side of the figure, andthe resulting digital data are processed by respective components for(optional) data inversion, threshold/digital offset, e.g., for noisesuppression, and peak detection, then summing components for performingfast partial sums, specifically, for generating and combining partialsums or accumulations, respectively. The fast partial sums are providedto (deep) onboard memory for storage until such time as the final sum isrequested by the user via software. On demand, the fast partial sums areretrieved from onboard memory and combined to produce a final sum. Theresulting data are then exported via a PCI interface and bus, e.g., to ahost device, etc.

Such prior art device have notable shortcomings, including, for example,issues related to the following:

Inter-record dead time (or interval)—the time from the acquisition ofthe final sample of the final waveform of one accumulated record untilthe digitizer is able to respond to a subsequent trigger and acquire thefirst waveform of the next accumulated record, specified either as atime or as a duty cycle. During this interval, the digitizer is “blind”to triggers, and the corresponding measurement data is not included inany accumulated record. This could be due to memory access times, bustraffic delays, trigger circuit rearming, etc. In the prior art, thistime is typically on the order of 1 ms+ and is dependent on waveformlength. These waveforms are missed and not included in the accumulatedrecords, which has undesirable implications for end-applications,especially applications requiring high sensitivity measurements of lowamplitude signals and applications measuring/searching for intermittentevents;

Streaming—prior art digitizers do not offer the ability to continuouslystream accumulated data out at the same rate as it is being produced;

Number of waveforms per accumulated record—there are limitations on thenumber of waveforms that can be summed into one accumulated record,e.g., requiring this parameter to be specified in terms of a fixedmultiple (value); and

Waveform length—there are limitations on the waveform length that can beaccumulated, e.g., due to block RAM limitations.

Accordingly, improved systems and methods for accumulating waveform dataare desired.

SUMMARY OF THE INVENTION

Various embodiments are presented of a system and method for hardwareimplemented acquisition and chunk based accumulation of waveform data.

In one embodiment of a method for accumulating waveform data, adigitizer may be provided, including a circuit, e.g., an applicationspecific integrated circuit (ASIC) or a programmable hardware element, afirst memory bank, coupled to the circuit, and a second memory bank,coupled to the circuit. The circuit may be configured to accumulate aset of waveforms by: a) storing a first subset of the waveforms in thefirst memory bank, b) accumulating each waveform of the first subset ofwaveforms in a chunk-wise manner, wherein each chunk has a specifiedsize, thereby generating a first bank sum comprising a first partialaccumulation of the set of waveforms, c) storing a second subset ofwaveforms in the second memory bank concurrently with b), and d)accumulating each waveform of the second set of waveforms in achunk-wise manner, thereby generating a second bank sum comprising asecond partial accumulation of the set of waveforms. In one embodiment,the circuit may be further configured to perform e) accumulating thefirst and second bank sums into a running accumulation of the set ofwaveforms, and f) repeating a)-e) for successive further first andsecond subsets of the set of waveforms, thereby generating anaccumulated record of the set of waveforms.

In some embodiments, the method may (or the circuit may be configuredto) accumulate and store waveform data in alternating memory banks in ahardware based chunkwise manner by:

a) storing a first chunk of a first waveform of a first set of waveformsin a first memory buffer of the first memory bank (of the digitizer), b)storing a second chunk of the first waveform in a first memory buffer ofa second memory bank (of the digitizer), and c) repeating a)-b)respectively for successive pairs of further chunks of the firstwaveform, thereby storing the first waveform in chunks alternatingbetween successive buffers in the first and second memory banksConcurrently with c), the method may further perform: d) transferringthe first chunk stored in first memory buffer of the first memory bankto a first FIFO, and e) transferring the second chunk stored in thefirst memory buffer of the second memory bank to a second FIFO.

In some embodiment, the method may further include: f) accumulating afirst chunk of a second waveform of the first set of waveforms with thefirst chunk of the first waveform stored in the first FIFO and store inthe first memory buffer of the first memory bank, g) accumulating asecond chunk of the second waveform with the second chunk of the firstwaveform stored in the second FIFO and store in the first memory bufferof the second memory bank, and concurrently with g), h) transferring afirst chunk of a first successive pair of the further chunks of thefirst waveform from a second buffer of the first memory bank into thefirst FIFO.

In one embodiment, the method may also include: i) accumulating a firstchunk of a first successive pair of further chunks of the secondwaveform with the first chunk of the first successive pair of thefurther chunks of the first waveform stored in the first FIFO and storein the second memory buffer of the first memory bank, and concurrentlywith i), j) transferring a second chunk of the first successive pair offurther chunks of the first waveform from the second buffer of thesecond memory bank into the second FIFO.

The method may further include: k) repeating g)-j) for furthersuccessive pairs of chunks of the second waveform using respectivesuccessive buffers of the first and second memory banks, therebygenerating an accumulated record of the first and second waveforms, andl) repeating f)-k) for successive further waveforms of the first set ofwaveforms, thereby generating an accumulated record of all waveforms ofthe first set of waveforms.

Thus, embodiments of the above method may utilize chunk based waveformaccumulation in alternating memory banks to efficiently accumulatewaveform data.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when thefollowing detailed description of the preferred embodiment is consideredin conjunction with the following drawings, in which:

FIG. 1 is a high level block diagram of a digitizer, according to theprior art;

FIG. 2 illustrates an exemplary system configured to implementembodiments of the present disclosure;

FIG. 3 illustrates an exemplary instrumentation control system,according to one embodiment;

FIG. 4A is a high level block diagram of an exemplary process controlsystem, according to one embodiment;

FIG. 4B illustrates an exemplary system which may perform control and/orsimulation functions according to some embodiments;

FIG. 5 is an exemplary block diagram of the computer systems of FIGS. 2,3, 4A, and 4B, according to one embodiment;

FIG. 6 is a flowchart diagram illustrating one embodiment of a methodfor accumulation of waveform data using alternating memory banks;

FIGS. 7A-7I illustrate exemplary waveform data accumulation per themethod of FIG. 6, according to one embodiment;

FIGS. 8A-8B illustrate exemplary onboard memory write (8A) and readorders (8B) for the exemplary waveform data accumulation of FIGS. 7A-7I,according to one embodiment;

FIG. 9 is a flowchart diagram illustrating another method foraccumulation of waveform data using alternating memory banks, accordingto one embodiment;

FIGS. 10A-10I illustrate hardware implemented accumulation of waveformdata using alternating memory banks, according to one embodiment;

FIG. 11 is a flowchart diagram of a method for waveform accumulation andstorage in alternating memory banks, according to one embodiment;

FIGS. 12A-12H illustrate hardware implemented waveform data accumulationand storage in alternating memory banks, according to one embodiment;

FIG. 13 is a high level block diagram of a digitizer, according to oneembodiment; and

FIGS. 14A-14D illustrate concurrent accumulation and streaming ofwaveform data, according to one embodiment.

While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and are herein described in detail. It should beunderstood, however, that the drawings and detailed description theretoare not intended to limit the invention to the particular formdisclosed, but on the contrary, the intention is to cover allmodifications, equivalents and alternatives falling within the spiritand scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION OF THE INVENTION Incorporation by Reference

The following references are hereby incorporated by reference in theirentirety as though fully and completely set forth herein:

U.S. Provisional Application Ser. No. 61/700,818, titled “HardwareImplemented Chunk Based Accumulation of Waveform Data”, filed Sep. 13,2012.

TERMS

The following is a glossary of terms used in the present application:

Memory Medium—Any of various types of memory devices or storage devices.The term “memory medium” is intended to include an installation medium,e.g., a CD-ROM, floppy disks, or tape device; a computer system memoryor random access memory such as DRAM, DDR RAM, SRAM, EDO RAM, RambusRAM, etc.; or a non-volatile memory such as a PROM, EPROM, EEPROM, flashmemory, or magnetic media, e.g., a hard drive, or optical storage. Thememory medium may comprise other types of memory as well, orcombinations thereof. In addition, the memory medium may be located in afirst computer in which the programs are executed, and/or may be locatedin a second different computer which connects to the first computer overa network, such as the Internet. In the latter instance, the secondcomputer may provide program instructions to the first computer forexecution. The term “memory medium” may include two or more memorymediums which may reside in different locations, e.g., in differentcomputers that are connected over a network.

Computer System—any of various types of computing or processing systems,including a personal computer system (PC), mainframe computer system,workstation, network appliance, Internet appliance, personal digitalassistant (PDA), television system, grid computing system, or otherdevice or combinations of devices. In general, the term “computersystem” can be broadly defined to encompass any device (or combinationof devices) having at least one processor that executes instructionsfrom a memory medium.

Programmable Hardware Element—includes various hardware devicescomprising multiple programmable function blocks connected via aprogrammable interconnect. Examples include FPGAs (Field ProgrammableGate Arrays), PLDs (Programmable Logic Devices), FPOAs (FieldProgrammable Object Arrays), and CPLDs (Complex PLDs). The programmablefunction blocks may range from fine grained (combinatorial logic or lookup tables) to coarse grained (arithmetic logic units or processorcores). A programmable hardware element may also be referred to as“reconfigurable logic”.

Functional Unit (or Processing Element)—refers to various elements orcombinations of elements. Processing elements include, for example,circuits such as an ASIC (Application Specific Integrated Circuit),portions or circuits of individual processor cores, entire processorcores, individual processors, programmable hardware devices such as afield programmable gate array (FPGA), and/or larger portions of systemsthat include multiple processors, as well as any combinations thereof.

Circuit—a “circuit” or “circuit device” as used herein has its ordinaryand accepted meaning in the art, and at least includes electroniccomponents and connections between the components. Examples of circuitsand circuit devices may include printed circuit boards (PCBs),integrated circuits (ICs) including system on chips (SoCs), and/or anyof various semiconductor devices, as well as ASICs and programmablehardware elements.

Circuit Diagram—the term “circuit diagram” as used herein has itsordinary and accepted meaning in the art, and at least includes arepresentation of a circuit including components of the circuit andconnections between the components. A circuit diagram may alternativelybe referred to as a circuit schematic, an electronic schematic, or anelectrical diagram, according to various embodiments.

Trigger—an initiating event that causes the acquisition of a waveform(e.g. a software command, analog signal trigger, digital trigger input,etc.).

Waveform—a set of samples, e.g., acquired in response to a trigger.

Waveform Length—the number of samples in a waveform. The maximumwaveform length supported by an accumulating digitizer prevents orcomplicates acquisition of repetitive events that have a period longerthan the maximum waveform length. For some applications, the use oftrigger delay can be an acceptable workaround to at least enableinspection of subsections of events of interest for events that lastlonger than the time period this number of samples would represent.

Waveform Rearm Time—the time from the acquisition of the final sample ofone waveform until the digitizer is able to respond to a subsequenttrigger and acquire the next waveform to be included in the sameaccumulated record; this could be due to trigger circuit rearming,re-initialization of internal counters or other acquisition circuits,etc., and is typically on the order of 1 microsecond forgiga-samples/second and greater (GS/s+) digitizers.

Accumulator—an addition (summer) operator combined with accumulatormemory such that the result of previous sums remains available and anynew inputs provided to the accumulator are added to the stored result ofprevious sums until such time as the Accumulator is re-initialized.

Accumulator Memory—Accumulator memory is the portion of an accumulatorthat holds the current running sum value while awaiting the presentationof the next value to be added. This memory could be implemented usinglogic components such as flip-flops, DRAM, etc.

Number of Waveforms Per Bank—denoted herein by “n”, this is the numberof raw waveforms that may be stored in a given memory bank at a time.

Number of Waveforms Per Accumulated Record—denoted herein by “N”, thisis the number of waveforms to be accumulated into a single accumulatedrecord.

Accumulated Record—each sample in an accumulated record is the summationof the corresponding samples from each individual waveform in the set ofN waveforms to be accumulated. The accumulated record has the samenumber of samples as each individual waveform that went into the sum;however, the number of bits used to represent each sample in theaccumulated record grows with the number of waveforms if the fullresolution is to be preserved.

Bank sum (or Partially Accumulated Record)—each sample in a bank sum isthe summation of the corresponding samples from each individual waveformin the set of n waveforms that were stored in a single pass through asingle memory bank. The bank sum has the same number of samples as eachindividual waveform that went into the sum; however, the number of bitsused to represent each sample in the bank sum grows with the number ofwaveforms if the full resolution is to be preserved.

Partially Accumulated Chunk—A partially accumulated chunk is a subset ofa bank sum. Each sample in a partially accumulated chunk is thesummation of the corresponding samples from each individual waveform inthe set of n waveforms that were stored in a single pass through asingle memory bank.

Averaged Record—an accumulated record divided by the number ofindividual waveforms N that were summed to create the accumulatedrecord.

It should be noted that some prior art documentation uses the term “deadtime” non-specifically, sometimes referring to what is defined herein aswaveform rearm time, sometimes to inter-record dead time, sometimes toother time spent readying the device to proceed and sometimes tocombinations thereof. Also, some prior art documentation uses the term“record” for what is herein defined as waveform, and the term“multi-record sum” or “block” for what is herein defined as anaccumulated record. Thus, these terms should be interpreted carefully inlight of the context in which they are presented.

FIG. 2—Exemplary System

FIG. 2 illustrates an exemplary system 200 which may be configured toimplement embodiments of the present disclosure. As shown in FIG. 2, thesystem may include a chassis 95 with one or more circuit cards orboards, including a digitizer 110, coupled to a computer system 82 withone or more user input devices, such as a keyboard, mouse, and/ordisplay device. The digitizer 110 may be configured to implement one ormore of the techniques disclosed here.

The computer system 82 may include at least one memory medium on whichone or more computer programs or software components may be stored. Forexample, the memory medium may store one or more programs which areexecutable to control and/or communicate with the chassis, e.g., thedigitizer, for example, to receive, store, and possibly analyze dataacquired by the digitizer. The memory medium may also store operatingsystem software, as well as other software for operation of the computersystem.

FIG. 3—Instrumentation Control System

FIG. 3 illustrates an exemplary instrumentation control system 300 whichmay implement embodiments of the present disclosure. According tovarious embodiments, the instrumentation control system 300 may beinvolved with performing test and/or measurement functions; controllingand/or modeling instrumentation or industrial automation hardware;modeling and simulation functions, e.g., modeling or simulating a deviceor product being developed or tested, etc. In particular, embodimentsare contemplated in which instrumentation control system is used toperform one or more tests (e.g., using any of the various instruments inthe instrumentation control system 300) on a unit under test (UUT) 150,which may include acquiring waveform data from the UUT 150. However, itis noted that embodiments of the present invention can be used for aplethora of applications and is not limited to the above applications.In other words, applications discussed in the present description areexemplary only, and embodiments of the present invention may be used inany of various types of systems.

The system 300 may include a host computer 82 which couples to one ormore instruments. The host computer 82 may include a CPU, a displayscreen, memory, and one or more input devices such as a mouse orkeyboard as shown. The computer 82 may operate with the one or moreinstruments to analyze, measure, or control UUT 150.

The one or more instruments may include a GPIB instrument 112 andassociated GPIB interface card 122, a data acquisition board 114inserted into or otherwise coupled with chassis 124 with associatedsignal conditioning circuitry 126, a VXI instrument 116, a PXIinstrument 110, a video device or camera 132 and associated imageacquisition (or machine vision) card 134, a motion control device 136and associated motion control interface card 138, and/or one or morecomputer based instrument cards 142, among other types of devices. Insome systems, one or more instruments may be configurable (or evenre-configurable) by a computer system. For example, embodiments arecontemplated in which one or more instruments include one or moreprogrammable hardware elements, which may be configured (e.g., using agraphical program created using LabVIEW™ by National InstrumentsCorporation, or by any other means) to implement a particular function.

The computer system may couple to and operate with one or more of theseinstruments. The instruments may be coupled to the UUT 150, or may becoupled to receive field signals, typically generated by transducers,and at least one instrument may be or include a digitizer according toembodiments of the present disclosure, which may operate to acquire anddigitize signals from the UUT (or field sensors). In some embodiments,one or more of the various devices shown in FIG. 3 may couple to eachother over a network, such as the Internet.

The system 300 may be used in a data acquisition and controlapplication, in a test and measurement application, an image processingor machine vision application, a process control application, anautomation control application, a man-machine interface application, asimulation application, or a hardware-in-the-loop validationapplication, among others.

FIGS. 4A and 4B—Further Exemplary Systems

FIGS. 4A and 4B illustrate further exemplary systems configured toimplement or utilize embodiments of the techniques disclosed herein.

FIG. 4A illustrates a general high-level block diagram of a genericcontrol and/or simulation system which comprises a controller 92 and aplant 94. The controller 92 represents a control system/algorithm theuser may be trying to develop. The plant 94 represents the system theuser may be trying to control. For example, if the user is designing anECU for a car, the controller 92 is the ECU and the plant 94 is thecar's engine (and possibly other components such as transmission,brakes, and so on.) As shown, a user may create a graphical program thatspecifies or implements the functionality of one or both of thecontroller 92 and the plant 94. For example, a control engineer may usea modeling and simulation tool to create a model (graphical program) ofthe plant 94 and/or to create the algorithm (graphical program) for thecontroller 92.

FIG. 4B illustrates an exemplary system which may perform control and/orsimulation functions. As shown, the controller 92 may be implemented bya computer system 82 or other device (e.g., including a processor andmemory medium and/or including a programmable hardware element) thatexecutes or implements a graphical program. In a similar manner, theplant 94 may be implemented by a computer system or other device 144(e.g., including a processor and memory medium and/or including aprogrammable hardware element) that executes or implements a graphicalprogram, or may be implemented in or as a real physical system, e.g., acar engine.

In one embodiment of the invention, one or more graphical programs maybe created which are used in performing rapid control prototyping. RapidControl Prototyping (RCP) generally refers to the process by which auser develops a control algorithm and quickly executes that algorithm ona target controller connected to a real system. The user may develop thecontrol algorithm using a graphical program, and the graphical programmay execute on the controller 92, e.g., on a computer system or otherdevice. The computer system 82 may be a platform that supports real timeexecution, e.g., a device including a processor that executes a realtime operating system (RTOS), or a device including a programmablehardware element.

In one embodiment of the invention, one or more graphical programs maybe created which are used in performing Hardware in the Loop (HIL)simulation. Hardware in the Loop (HIL) refers to the execution of theplant model 94 in real time to test operation of a real controller 92.For example, once the controller 92 has been designed, it may beexpensive and complicated to actually test the controller 92 thoroughlyin a real plant, e.g., a real car. Thus, the plant model (implemented bya graphical program) is executed in real time to make the realcontroller 92 “believe” or operate as if it is connected to a realplant, e.g., a real engine.

In variations of the above-described embodiments, one or more of thedevices may couple to each other over a network, such as the Internet.

FIG. 5—Computer System Block Diagram

FIG. 5 is a block diagram representing one exemplary embodiment of thecomputer system 82 illustrated in the above-described Figures. It isnoted that any type of computer system configuration or architecture canbe used as desired, and FIG. 5 illustrates a representative PCembodiment. It is also noted that the computer system may be a generalpurpose computer system, a computer implemented on a card installed in achassis, or other types of embodiments. Elements of a computer notnecessary to understand the present description have been omitted forsimplicity.

The computer may include at least one central processing unit or CPU(processor) 160 which is coupled to a processor or host bus 162. The CPU160 may be any of various types, including an 96 processor, e.g., aPentium class, a PowerPC processor, a CPU from the SPARC family of RISCprocessors, as well as others. A memory medium, typically comprising RAMand referred to as main memory, 166 is coupled to the host bus 162 bymeans of memory controller 164. The main memory 166 may store the one ormore programs executable to implement embodiments of the disclosure. Themain memory may also store operating system software, as well as othersoftware for operation of the computer system.

The host bus 162 may be coupled to an expansion or input/output bus 170by means of a bus controller 168 or bus bridge logic. The expansion bus170 may be a PCI (Peripheral Component Interconnect) expansion bus,e.g., a PCIe (PCI Express) bus, although other bus types can be used.The expansion bus 170 includes slots by which various devices (such asthose described above with respect to the instrumentation control systemof FIG. 3) couple to the computer system 82. The computer 82 furthercomprises a video display subsystem 180 and hard drive 182 coupled tothe expansion bus 170. The computer 82 may also comprise a GPIB card 122coupled to a GPIB bus 112, and/or an PCI (or PCIe) card or device 186coupled to a PCI (or PCIe)chassis 95, e.g., that includes an embodimentof digitizer 110.

It should be noted that while embodiments of the digitizer (and/orchassis) are described herein with respect to a PCIe implementation, anyother protocols, chassis, or buses may be used as desired. Moreover, invarious embodiments, the digitizer disclosed herein may be implementedas an expansion card for a host computer, a board for use in a chassis(e.g., per FIG. 2), a standalone device, etc., as desired. Additionally,in some embodiments, the host computer 82 may be implemented as or on acard in the chassis 95.

Waveform Accumulation

Accumulation operations have commonly been implemented in host software.In the host software-based accumulation paradigm, applications thatrequire continuous production of accumulated records must be able totransfer those raw waveform data from the digitizer to the CPU/hostmemory, generally across a computer bus with limited bandwidth, on anon-going basis. As digitization technology has advanced to the pointthat it can produce data that overwhelms the buses available forreturning digitized data to the host, a host software-based approachforces the user to choose between access to the latest digitizationtechnology which puts a heavier load on the bus and key accumulationspecifications. The bus bottleneck causes long inter-record dead time asa result of the longer time spent waiting for waveforms to betransferred across the bus. The latest digitization technology used withthis model effectively makes the inter-record dead time so long that thepercentage of time spent waiting dwarfs the time spent sampling.

Inter-record dead time has highly undesirable implications forend-applications, especially applications requiring high sensitivitymeasurements of low amplitude signals and applicationsmeasuring/searching for intermittent events. For these sensitivemeasurements, every low amplitude event missed means that the underlyingphenomenon that it represents is more susceptible to being lost amongthe noise.

Some applications do not require continuous accumulation. Thoserequiring a waveform length and a number of waveforms per accumulatedrecord that could fit in the digitizer's on-board memory and queued forlater transfer across the bus could still be addressed within the hostsoftware-based accumulation paradigm while using higher sampling rateand higher resolution digitizers, but for modern digitizer and typicalPC (personal computer) bus technologies the inter-record dead time in ahost software-based approach would be dominated by the time delay thatresults from the mismatch between the number of bytes needing to bepushed through the bus and the bus's available throughput. For ahost-software implementation, during the readout time, the acquiredwaveforms acquisition of new data for subsequent accumulated recordscannot begin because the on-board memory remains in use until itscontents are transferred to the host.

Some prior art approaches sought to address this issue by bringing theaccumulation operation into the digitizer hardware itself. For caseswhere there is memory much larger than the desired waveform sizeavailable on-board and the memory is sufficiently fast that it can beread and rewritten faster than the arrival rate of incoming ADC samples,the accumulation can be done directly in memory. Then the accumulationprocess can be stopped and the finished data read out. This techniquewould still incur inter-record dead time during the memory readout andbus transfer time as well as any time necessary to rearm triggeringcircuitry, but transferring only one accumulated record rather than allthe individual raw waveforms that required transferring under the hostsoftware-based implementation can, for many configurations,significantly reduce bus transfer time. However, this approach requiressignificant memory bandwidth, which does not scale gracefully withincreased data acquisition rates.

Accordingly, depending on the application and associated constraints,one or more techniques disclosed herein may be used to address orameliorate one or more of the shortcomings of prior art approaches. Forexample, one technique may minimize inter-record dead time, anothertechnique may improve waveform length, another may allow one to keep theoriginal waveform for certain applications, e.g., debugging, and soforth.

Below are presented multiple approaches for addressing variouslimitations of prior art in the area of hardware-based accumulation,enabling optimization of the design for various performance factors.Note that as used herein, the term “hardware implemented” means that thefunctionality is implemented via one or more ASICs (application specificintegrated circuits) or via one or more programmable hardware elements,e.g., FPGAs.

Method 1: Hardware Implemented Chunk Based Double Buffered WaveformAccumulation

FIGS. 6 and 7A-7I illustrate an exemplary embodiment of hardwareimplemented chunk based double buffered waveform data accumulation, andFIGS. 8A and 8B illustrate further details of this chunk basedaccumulation method. More specifically, the approach illustrated inFIGS. 6 and 7A-7I, which may be referred to herein as “method 1”,implements hardware based waveform accumulation using double buffering,e.g., via alternating storage to, and accumulation from, (at least) twomemory banks, e.g., bank A and bank B (or functional equivalents). Thus,a digitizer configured to implement embodiments of the techniques ofFIGS. 6 and 7A-7I may include two memory banks via which the doublebuffering is performed, and when operated, may acquire and processmultiple waveforms, including accumulating N of the waveforms. In thistechnique, each memory bank may be capable of storing n of the waveformsat a time, and a series of such (n waveform) sets or sequences may beaccumulated by the digitizer. Thus, in direct contrast with some priorart techniques, “deep memory” (meaning extensive, less readilyaccessible data storage) is not used for accumulation memory, but ratherfor holding raw waveforms. With a chunk based approach, the actualaccumulator memory can be much smaller than that required to store anentire accumulated record. As a result, in one embodiment, theaccumulation memory may be allocated in the controller. In differentembodiments, the memory in the final accumulator for summing the banksums (running sum accumulated record in FIGS. 7E-7I) could, for example,be implemented in the controller, in one or both of the memory banks, orin a different device in the system, e.g., instrumentation controlsystem 300, including host computer memory.

FIG. 6: Flowchart of a Method for Accumulation of Waveform Data withUsing Alternating Memory Banks

FIG. 6 illustrates a method for accumulation of waveform data usingalternating memory banks, e.g., via double buffering, according to oneembodiment. The method shown in FIG. 6 may be used in conjunction withany of the computer systems or devices shown in the above Figures, e.g.,variants of the digitizer of FIG. 13, described below, among otherdevices. In various embodiments, some of the method elements shown maybe performed concurrently, in a different order than shown, or may beomitted. Additional method elements may also be performed as desired. Asshown, this method may operate as follows.

First, in 602, a first subset of waveforms (to be accumulated) may bestored in (written to) a first memory bank, e.g., memory bank A of adigitizer that further includes a second memory bank. Note that in otherembodiments, additional memory banks may be used as desired.

In 604, each waveform of the first subset of waveforms may beaccumulated in a chunk-wise manner, thereby generating a first bank sumcomprising a first partial accumulation of the set of waveforms. Eachchunk may have a specified size. As will be described in more detailbelow, after the first bank sum is computed, it may be added to andstored in a running sum accumulated record, which may be initialized toa known value before the first subset of waveforms is acquired.

In 606, a second subset of waveforms may be stored in (i.e., written to)the second memory bank, e.g., memory bank B, concurrently with theaccumulating of 604.

In 608, each waveform of the second subset of waveforms may beaccumulated in a chunk-wise manner, thereby generating a second bank sumcomprising a second partial accumulation of the set of waveforms. Thefirst and second partial accumulations of the set of waveforms may beuseable to generate an accumulated record of the set of waveforms, asdescribed below.

Note that because raw waveforms are stored to memory bank A until thereceiving bank switches to memory bank B, all the data from thosewaveforms may be available for accessing in any order, unlike when itarrived in order from the ADC. Chunk based approaches take advantage ofthis fact to allow the use of smaller accumulator memory, which offerssignificant advantages.

Elaborating on one embodiment of the above, the sets (or sequences) of nwaveforms may be stored to two memory banks in a grouped alternatingfashion (completely controlled by the hardware with no softwareintervention) until the number of waveforms specified per accumulatedrecord, N, have been stored. Note that N may or may not be an evenmultiple of n, and so in some cases one or both of the memory banks maynot be entirely filled. In the event that N is not an even multiple ofn, care should be taken not to include any invalid contents ofnon-filled memory locations in the summing (accumulation). For each set(or sequence) of waveforms stored in a bank (e.g., banks A and B), thecontents of the bank may be used to produce a bank sum from thesample-wise sum of each of the waveforms stored in the associated memorybank. Regarding terminology, as noted above, an accumulated record isthe summation of the corresponding samples from each individual waveformin the set of N waveforms to be accumulated. Similarly, a bank sum maybe used to accumulate a running sum of waveform data from a particularmemory bank. In other words, the method of FIG. 6 may also accumulatethe first and second bank sums into a running accumulation of the set ofwaveforms, and moreover, may repeat the above method elements 602-608and the further accumulation of the accumulated bank sums, may beperformed repeatedly for successive additional (first and second)subsets of the set of waveforms to generate an accumulated record of theset of waveforms.

Accordingly, when multiple accumulations (of sets of N waveforms) areperformed to produce multiple accumulated records, some type of indexingmay be used to denote which accumulated record and which set of nwaveforms in that accumulation are being considered, e.g., bank sum(0,1), denoting it is contributing to the first accumulated record(accumulation 0, with zero based counting) and is the partialaccumulation from a bank of data holding the second set of n waveformsfor that accumulated record (n set 1, with zero based counting).

Thus, in some embodiments, the accumulated waveform data in the memorybanks (e.g., banks A and B) may themselves be accumulated. Morespecifically, the method may further include accumulating the first andsecond bank sums into a running accumulation of the set of waveforms,e.g., via the digitizer, i.e., a circuit comprised in the digitizer.Moreover, as also indicated above, the above method elements may berepeated one or more times in an iterative manner, thereby accumulatingsuccessive further first and second subsets of the set of waveforms,thereby generating an accumulated record of the set of waveforms. Inother words, the above method elements 602-608 and the furtheraccumulation of the accumulated bank sums, may be performed repeatedlyfor successive additional (first and second) subsets of the set ofwaveforms to generate an accumulated record of the set of waveforms. Inother embodiments, this second level of accumulation may be performed bya host computer coupled to the digitizer. For example, the method (e.g.,via a circuit of the digitizer) may include transferring the bank sumsto a host computer using a host computer bus, e.g., via DMA (DirectMemory Access), and store the bank sums in host computer memory. Thehost computer may be configured to accumulate the first and second banksums into a running accumulation of the set of waveforms. Additionally,the host computer may be configured to operate in conjunction with the(circuit of the) digitizer to repeat the above method elements,including the accumulation of the bank sums on the host side forsuccessive further first and second subsets of the set of waveforms,thereby generating an accumulated record of the set of waveforms.

Moreover, in further embodiments, multiple such accumulated records ofrespective sets of waveforms may be accumulated (with or withoutparticipation by the host computer). Thus, in one exemplary embodiment,if the desired N is 4*n, meaning that 4*n waveforms are summed(accumulated) on a per sample basis, and if the desired number ofaccumulated records is 2, meaning that two such sets of N waveforms areto be accumulated, then the following basic operations may be performed:

Waveforms [0, n−1] (the first n waveforms, i.e., n set 0) may be writtento Bank A while Bank B is idle;

Waveforms [n, 2*n−1] (the second n waveforms, i.e., n set 1) may bewritten to Bank B while waveforms [0, n−1] are concurrently read fromBank A and accumulated into a bank sum for the first set of waveforms,denoted as bank sum (0,0);

The bank sum (0,0) may then be provided as an input to a secondaryaccumulator for applications requiring N>n, thereby clearing the banksum buffer for use in the preparation of the next bank sum required toproduce the accumulated record;

Waveforms [2*n, 3*n−1] (the third n waveforms) may be written to Bank Awhile waveforms [n, 2*n−1] (the second n waveforms) are concurrentlyread from Bank B and accumulated into a bank sum for the second set ofwaveforms, denoted as bank sum (0,1) and provided as an input to asecondary accumulator;

Waveforms [3*n, 4*n−1] (the fourth n waveforms) may be written to Bank Bwhile waveforms [2*n, 3*n−1] (the third n waveforms) are concurrentlyread from Bank A and accumulated into bank sum (0,2) and provided as aninput to a secondary accumulator;

Waveforms [4*n, 5*n−1] (the fifth n waveforms, i.e., n set 4, or thefirst n waveforms of the second accumulation, i.e., n set(0,1)) may bewritten to Bank A while waveforms [3*n, 4*n−1] (i.e., n set 3) areconcurrently read from Bank B and accumulated into bank sum (0,3) andprovided as an input to a secondary accumulator

If so configured, the 4 bank sums for this first accumulated record (ofthe first set of N waveforms) which were provided as inputs to thesecondary accumulator have now been further accumulated into a firstaccumulated record (0) (again, using zero based counting). This finalaccumulation (of the first N waveforms) may be performed in any of avariety of ways, as desired. In one embodiment, the secondaryaccumulation is computed in hardware. In another embodiment, whenconvenient for the application and design constraints, the bank sumswhich generally require a significant reduction in bytes vs. theoriginal raw waveforms can be successfully transferred across the bus tothe host computer for a final accumulation operation with no impact onkey application specifications. In this embodiment, the “heavy lifting”portion of the accumulation is accomplished in the hardware while thefinal sum is completed by the CPU. The handling of the resultingaccumulated records may be performed in any of a variety of ways, asdesired. For example, in one embodiment, once an accumulation (of Nwaveforms) has been performed, the result may be moved to anotherstorage location to free up the accumulated record/buffer for use in thepreparation of the next accumulated record. In another embodiment,memory for multiple accumulated records may be provided in either alinear or circular buffer fashion, and each accumulation stored in arespective record.

Waveforms [5*n, 6*n−1] (the sixth n waveforms, i.e., n set 5, or thesecond n waveforms of the second accumulation, i.e., n set(1,1)) may bewritten to Bank B while waveforms [4*n, 5*n−1] are concurrently readfrom Bank A and accumulated into bank sum (1, 0), and provided as aninput to a secondary accumulator; since this bank sum is the first banksum of the second accumulated record, the secondary accumulator may becleared to a known initial value before the bank sum is provided as aninput to the secondary accumulator;

Waveforms [6*n, 7*n−1] (the seventh n waveforms, i.e., n set 6, or thethird n waveforms of the second accumulation, i.e., n set(1,2)) may bewritten to Bank A while waveforms [5*n, 6*n−1] are concurrently readfrom Bank B and accumulated into bank sum (1,1) and provided as an inputto the secondary accumulator;

Waveforms [7*n, 8*n−1] (the eighth n waveforms, i.e., n set 7, or thethird n waveforms of the second accumulation, i.e., n set(1,3)) may bewritten to Bank B while waveforms [6*n, 7*n−1] are concurrently readfrom Bank A and accumulated into bank sum (1,2) and provided as an inputto the secondary accumulator; and

Waveforms [7*n, 8*n−1] are read from Bank B and accumulated into banksum (1,3) and provided as an input to the secondary accumulator.

The bank sums for this second accumulation (of the second set of Nwaveforms) may be further accumulated into a second accumulated record(1) (again, using zero based counting). As with the first accumulation,this (second) final accumulation (of the second N waveforms) may beperformed in any of a variety of ways, as desired, e.g., re-using theoriginal accumulated record buffer, or using a second accumulatedrecord, buffer etc. Similarly, the final accumulated records for eachset of N waveforms may be stored locally (on board the digitizer) and/ortransmitted to external storage, e.g., of a host controller or otherexternal device.

Note that this switching back and forth between banks can proceed forhowever many accumulated records are configured, including indefinitely.

FIGS. 7A-7I illustrate an exemplary embodiment of the above method(method 1/FIG. 6).

FIG. 7A illustrates storing an initial (first) acquired raw waveform ofa first set (or sequence) of n waveforms, specifically, waveform 0(using zero-based counting), in memory bank A of the digitizer, whilebank B is idle. It should be noted that the particular appearance orapparent structure of the memory banks is meant to be exemplary andillustrative only, and is not intended to limit the types or structuresof the memory banks to any particular form, structure, or appearance. Invarious embodiments, any double buffering architecture may be used asdesired. Moreover, in some embodiments, the memory banks may not belimited in size to only store n waveforms. For example, one or both ofthe memory banks may include enough space to further store other data,e.g., partial or entire accumulated waveform data including what isdescribed herein as bank sums or accumulated records.

FIG. 7B illustrates storing a second raw waveform, waveform 1, in bankA. FIG. 7C illustrates storing a final waveform of the (first) set (orsequence) of n waveforms, specifically, raw waveform n−1 (the n^(th)waveform of the set), in bank A, and the start of an accumulation of thepreviously stored samples, as indicated by the summer symbol (circlewith plus sign) and the “zero” indicating the clearing of theaccumulation memory in preparation for beginning accumulation operationson the sequence in Bank A.

FIG. 7C illustrates switching of incoming write data (next set orsequence of n waveforms) to memory bank B, and a running “chunk”summation of the stored data in memory bank A, which will be stored in a“bank sum”, shown in FIG. 7D, which may be part of or distinct frommemory bank A, as desired. As used herein, the term “chunk” refers to aspecified (static or dynamic) amount of data (e.g., of size k samples),according to which the accumulation of waveform data is performed. Notethat since no previous waveform data were accumulated for the set ofdata currently in bank A, the first instance of each sample in eachchunk to enter the accumulator is summed with “zero” due toinitialization, as indicated. Note that in various embodiments, the“zero” value can actually be 0, or any other known value convenient forthe application. In other embodiments, the “zero” value may be differentfor each element of the bank sum. The accumulator may be re-initializedto this zero value at the start of each “chunk” summation such that theresulting partially accumulated chunk contains data only from samplescorresponding to the samples within the current chunk range for thewaveforms currently in the bank as depicted in FIG. 8B (describedbelow).

More specifically, bank A begins read operations, where successivechunks of the stored waveforms are read and summed (accumulated), andthe result stored at the location corresponding to the chunk in the banksum. For example, assuming that each chunk includes corresponding setsof k samples from each of the n waveforms in bank A, and that there arem chunks in bank A, the bank sum may be configured to store theaccumulated m chunks, as indicated in FIG. 7D. Said another way, oncethe waveform data (for a set or sequence of n waveforms) have beenstored in a memory bank (i.e., buffer), the data in that bank may beread and accumulated, chunk-wise, and the resulting “chunk sums” orpartially accumulated chunks maintained in the bank sum. In a simpleembodiment, n may be equal to 1 (i.e., only one waveform may be storedin a bank at a time), and the chunk size k may be 1 sample (and so, inthis simple case, the number of chunks m is simply the number of samplesin the waveform, in which case the accumulator or summer may read (andaccumulate/sum) 1 sample at a time (while the next waveform is writtento the other memory bank). However, in typical embodiments, m may begreater than 1. In these figures, dark fills in the memory banksindicate written data, and partial fills indicate that some data havebeen read from the bank. Thus, once all of the data in a bank has beenread, the bank may be shown as empty, which simply means that new datacan be written to that bank, possibly after clearing the previous (read)data.

As FIG. 7D also indicates, an exemplary accumulation process regardingbank A may include reading m chunks (e.g., chunk 0 through chunk m−1),where each chunk includes a respective k samples from each of the nwaveforms stored in the bank (A). Note that FIG. 7D shows that theaccumulation (reading/summing) has read (and accumulated) all but thelast portion of chunk 0 (of the m chunks), i.e., all but thecontribution (for chunk 0) from waveform n−1 (the n^(th) waveform inbank A), as indicated by the partial fills in the bank. Note furtherthat while this accumulation of bank A proceeds, the next waveform(waveform n, the (n+1)^(th) waveform, is written to bank B, as alsoindicated in FIG. 7D. Subsequent waveforms may then be written to bank Bwhile the accumulation of bank A proceeds.

Note that in some embodiments, between memory bank switches (from readto write or write to read), read and write operations may operateasynchronously. The relative progression through the read and writeoperations shown is exemplary only (e.g., arbitrary), and such read andwrite operations may be performed in any order desired, so long as theread operations free the required storage (locations) before it isrequired for subsequent writes.

In other words, in some embodiments, with this chunk-based approachsamples may be read out in a different order from that in which theywere written. This allows for waveform lengths that exceed the availableaccumulator memory which is sized simply based on the number of samples,k, per chunk. This approach also allows for optimization of the memoryaccess size to address access time artifacts of the memory architecturevs. the amount of memory used in the accumulator. Further, it allowstransfer of each chunk of the bank sum running sum to the secondaryaccumulator or host as it is completed rather than waiting until theentire accumulated record is calculated as is the case in the prior art.

FIG. 7E illustrates completion of the accumulation of chunk 0 of thewaveforms stored in memory bank A. As shown, all of the chunk 0 sampleshave been read from memory bank A and summed (accumulated) on a persample basis, with the resulting partially accumulated chunk 0 stored inthe bank sum of FIG. 7D. Note that in the exemplary embodiment shown,the bank sum is coupled to an accumulated record, which may beconfigured to accumulate and store the partially accumulated chunks inthe bank sum, e.g., via another summing or accumulating process orcomponent, represented in FIG. 7E by second summer symbol. Note that theaccumulation/summing of the data in memory bank may be performedconcurrently with the writing (storing) of further waveforms in memorybank B, beginning specifically with raw waveform n+1, as shown. In otherwords, while the chunks of waveforms 0 through n−1 continue to beaccumulated from memory bank A, waveform n+1 data are being written tomemory bank B, as indicated by the partial fill of the second waveform(waveform n+1) portion of memory bank B. There is no additional Waveformrearm time between waveforms that will be stored in separate banks vs.in the same bank.

Thus, a subset (e.g., finite cross section) of each of the waveformsaccumulated in memory bank A may be logically grouped into (orconsidered as) a chunk of some number of samples, e.g., k (chunk size).These samples may be read from each waveform in the memory bank andaccumulated into a k-sample (partially) accumulated chunk. In otherwords, to create a partially accumulated k-sample chunk, respectivek-sample chunks may be read from each waveform in the bank, and summedor accumulated, resulting in the partially accumulated k-sample chunk,where each partially accumulated (k-sample) chunk may be furtheraccumulated from successive waveforms written to the bank(s). Forsimplicity, the k-sample accumulation operations are depicted orrepresented in FIG. 7E (and others) by a single symbol (circle with plussign). Once this is complete as depicted in FIG. 7G, the accumulatormemory is reinitialized as previously mentioned.

FIG. 7F illustrates writing the next set of waveforms (specifically,waveforms n through 2n−1) into memory bank B, while accumulating thepreviously stored waveforms of memory bank A (indicated by the partialfill of bank A, and the “running chunk sum” notation adjacent to thesummer symbol) into the bank sum (shown almost full).

Note that this method may be implemented either with a fixed numberwaveforms (e.g., n) per bank or a programmable number of waveforms perbank, as desired.

FIG. 7G illustrates completion of the accumulation of the waveform datain bank A into the bank sum (specifically, accumulation of partiallyaccumulated chunk m−1, as shown) as raw waveforms n through 2n−1 arewritten to bank B and the accumulator that produced the partiallyaccumulated chunk is reinitialized.

FIG. 7H illustrates completion of the writing of raw waveform 2n−1 tobank B, as well as initiation of the “running sum” accumulation of datain the bank sum into the (final) accumulated record, where the bank sumis shown full, and the (final) accumulated record is shown empty.

FIG. 7I illustrates writing of raw waveform 2n to bank A, whileconcurrently reading and accumulating a first partially accumulatedchunk from bank B. As FIG. 7I also shows, the bank sum of FIG. 7H hasbeen accumulated (summed) into the (final) accumulated record, afterwhich the process illustrated by FIGS. 7A-7I may begin again,continually adding to the running sum or (final) accumulated recorduntil the desired number of waveforms (e.g., N) has been processed(accumulated).

Note that once N is satisfied, e.g., by however many memory bankswitches are necessary, the circuit (e.g., ASIC or programmable hardwareelement) may continue to switch banks without software involvement andmay immediately begin generating or populating the next accumulatedrecord (e.g., subject only to the same waveform rearm time as all othernew waveforms). This process may continue either for a specified orprogrammed number of accumulated records to acquire, or indefinitely, asconfigured.

FIGS. 8A and 8B present further details regarding the above describedchunk based accumulation method, according to one embodiment.

FIG. 8A illustrates possible writing order to a memory bank, accordingto one embodiment, with an initial write beginning at the top left sideof the figure (at the first chunk of the first waveform, i.e., waveform0, with zero based counting), and proceeding as indicated by thesuccessive arrows through chunk m−1 of waveform n−1. More specifically,the illustrated write order proceeds horizontally, writing successivechunks of waveform 0 into the memory bank, then successive chunks of thesecond waveform, i.e., waveform 1, and so forth, until all thesuccessive chunks of the n^(th) waveform (waveform n−1) are written tothe bank.

Now, FIG. 8B illustrates a possible reading order from a memory bank(for accumulation), such as the memory bank of FIG. 8A, according to oneexemplary embodiment. As shown, in this example, reads start at chunk 0of waveform 0 (first chunk of the first waveform), reading itsrespective k samples to produce partially accumulated chunk 0, proceedsto chunk 0 of waveform 1, and so forth, through chunk 0 of waveform n−1,thereby accumulating a partially accumulated chunk 0 from the nwaveforms. Then, as shown indicated by the arrows, the read continueswith chunk 1 of waveform 0 through chunk 1 of waveform n−1, and soforth, until all chunks of all the waveforms are read (and accumulated),producing one partial accumulated record.

This chunk based approach may enable efficient hardware basedaccumulation without the historical record length limitations imposed bythe size of the memory in the accumulator (on the digitizer) itself. Theapproach may enable the reuse of the accumulator memory (e.g., partial(and/or total) accumulated records or buffers) while still processingdata at the rate of acquisition and accommodating access times andorganizational characteristics of the deep memory (on the digitizer).The record length limit may then become a function of the size of thedeep memory, which is easily upgraded as that technology advances. Chunksize and specific write and read orders can be optimized for the accesstimes and organizational characteristics of the selected memory typeused.

As depicted in FIGS. 8A and 8B, with the described chunk-based approachsamples may be read out in a different order as that in which they werewritten. This allows allocating accumulator memory inside the ASIC orprogrammable hardware element (e.g., FPGA) while still supportingwaveform lengths that exceed the size of the accumulator memory. Byprocessing a particular range of samples from each waveform in the banktogether, a partially accumulated chunk made up of the sample sums canbe calculated. This intermediate result is generally highly compressedvs. the raw waveforms that produced it and can be easily sent backacross the bus into a DMA buffer in host memory, if desired. In oneembodiment the bank sum buffer into which partially accumulated chunksmight be transferred in host memory. In this embodiment, the bank sumcan be pulled from the DMA buffer and accumulated by the host controller(e.g., CPU) with previous bank sums corresponding to the same range ofsamples from other waveform sets.

The nature of the bank switching is such that it can be completedwithout knowledge of whether any particular iteration through a bankbegins or ends an accumulated record. As a result, a new accumulatedrecord can be started immediately, subject only to the waveform rearmtime. If it is desired, the bank switch mechanism can be made aware ofaccumulation record boundaries to more easily support cases where N isnot a whole multiple of n.

This method may allow the transfer of each partially accumulated chunkto the host as it is completed rather than waiting until all waveformsfor the accumulated record have been acquired before beginning anytransfer of the full accumulated record as is the case in the prior art.Combined with the ability for the hardware to switch banks on its ownand to start new accumulated records with no waveform rearm time longerthan that between waveforms within the same accumulated record, thisoffers inter-record rearm time advantages, allowing all inter-recordrearm other than the waveform rearm time to be completely eliminated.The transfer across the bus need not hold up the start of theaccumulations for the next chunk. Once the partially accumulated chunkis complete it can be moved to another holding buffer that can queue itup for bus transfer, if desired. The accumulator may then be cleared andvalues for the next chunk loaded. This may be repeated for theuser-programmed waveform length.

It should be noted that this is a major departure from prior artapproaches which require lengthy software intervention between some ormost accumulated records for any acquisitions requiring a number ofaccumulated waveforms that exceeds the on-board capability of theproduct, e.g., whether in a (memory) accumulation mode or simultaneousacquisition and readout (SAR) mode. The prior art's softwareintervention after a number of accumulated records that fit on on-boardmemory drives large and variable inter-record dead time for continuouslyrearmed operation, which are both eliminated by the approach of FIGS.7A-7I, while also offering improved specifications for key applicationrequirements, including effectively unlimited number of accumulatedrecords and numbers of waveforms per accumulated record, and waveformlengths that can theoretically be up to half the size of the memory bankas bus technology catches up, provided that the number of bits persample in the accumulated record is limited to still maintain sufficientdata compression to be sustainable for transfer across the bus.

In the event that the user chooses a configuration which does notprovide adequate compression to ensure that each bank can be read,accumulated, and cleared from the accumulator by the time that the otherbank finishes writing its raw data, the acquisition may overflow. Thiscan occur for corner cases such as only summing a few waveforms peraccumulated record. For these cases, the method of FIGS. 7A-8B may workonly as well as some prior art approaches where the inter-record deadtime is non-zero and waveforms are missed between accumulated records toallow additional time for readout. A counter to delay the start ofacquisition of waveforms for subsequent accumulated records may thus beprovided to prevent the overflow. Note, however, that this does notaddress the situation for the case that there are only a few waveformsper bank with a very long waveform length and where multiple memorybanks are required to store the number of waveforms per accumulatedrecord, which case would not be solved by the prior art approach either.

Unlike some prior art approaches, the above switching between memorybanks may be completely controlled by hardware, and may require nosoftware intervention, even when switching to a new accumulated record.Unlike prior art approaches, the bank switching does include anawareness of whether an accumulated record has just been completed thatmanifests as a remaining inter-record dead time in excess of thewaveform rearm time that can not be eliminated by the changing theinterval in which the accumulated record is read out of the digitizer.This combined with pipelined readout may enable the accomplishment ofreaching zero inter-record dead time (with the possible exception of thewaveform rearm time required after each waveform).

This method may thus enable the accumulator memory to reside inside anASIC or programmable hardware element (e.g., an FPGA or other logicdevice where the memory can be built from any of various onboardcomponents, e.g., FPGA BlockRAM, flip-flops, or the memory inside anFPGA DSP, etc., without sacrificing application waveform length. Havingthe accumulation memory inside a massively parallel FPGA device meansthe accumulation memory can be read and written each clock cycle andenables high memory throughput for parallel samples. Not having to meetthe needs of accumulation memory via an external memory interfacegreatly eases the design and validation of the hardware and thecomponent cost and board real estate. Rather than requiring memorythroughput of at least 8× the acquisition data rate like some prior artapproaches, this method only requires sustained memory throughput foreach memory bank that is only slightly more than the data rate of theacquisition.

The specific number of samples in a chunk can be optimized based on theorganization of the particular memory in use. There is a tradeoffbetween minimizing the effective access latencies of the external memorydevice vs. the amount of memory required in the FPGA for accumulatormemory. As noted above, in various embodiments, this method may beimplemented using a number of waveforms per bank, n, that is eitherfixed or a programmable.

Further regarding the above, embodiments of the above method mayeliminate the inter-record time for most cases by transferring eachchunk of the bank sum to the host as it is completed to start pushingdata across the bus as soon as possible, and filling the empty bank withnew waveforms for the next accumulated record while the full bank forthe previous accumulated record is read out.

Extreme cases with only a few waveforms per accumulated record or shortwaveform lengths might incur excess context switching penalties from thememory, for some memory types. These types of applications, however,typically do not require as much memory in the first place and thereforeare more likely to be satisfied by prior art approaches.

As noted above, embodiments of the above method may allow transfer ofeach chunk of the bank sum running sum to the host as it is completedrather than waiting until the entire accumulated record is calculated asis the case in the prior art, and moreover, may allow the originalwaveforms to be retained for applications where the number of waveformsper accumulated record can fit in the available deep memory. This canenable overlaying results derived from the accumulated record onto rawdatasets, aiding debugging, or satisfying application requirements forraw data retention.

Exemplary Comparison Factors

The following describes exemplary comparison factors regarding the abovemethod (with reference to FIGS. 6-8B) that may provide usefulcomparisons to prior art approaches. Note that the terms and valuespresented are exemplary only, and are not intended to limit theinvention to any particular form, function, or performance.

Maximum Waveform Length: Enables waveform lengths as long as half thememory available in each memory bank, if the host bus could keep up (dueto the relatively low approximately (digitizer resolution dependent) 1:2compression rate on the data being returns when only 2 waveforms arestored per bank). Currently, with a 600 MB/s transfer rate that can besustained in some PCI Express Gen 1×4 configurations, if the user isacquiring at 4 GS/s (assuming 8 bits per sample), a compression factorof at least 6.6:1 may be required. Depending on the exact implementationincluding resolution of the returned sum, this may mean that a minimumof 7 waveforms per memory bank would be sustainable, which would allowwaveform lengths of up to 1/7^(th) the amount of memory per bank, so insome embodiments, 146 M-samples would be the maximum waveform length forcurrent typical memory bank densities of 1 GB. As bus throughput andmemory density increase the achievable waveform length continues to risewith this method;

Number of Waveforms per Accumulated Record: Number of accumulatedrecords that can be acquired by the hardware between each softwarerestart;

Inter-record Deadtime: As noted above, in some embodiments, the abovemethod may almost eliminate inter-record deadtime;

Streaming: The ability to continuously stream accumulated records out ofthe product at least as fast as they are being produced to enablecontinuous acquisition and accumulation of data;

Accumulation memory throughput requirements; and

Support for on the fly changing of the number of waveforms peraccumulated record.

Method 2: Hardware Implemented Chunk Based Double Buffered WaveformAccumulation with Deep Memory Storage of Partial Accumulated Records

One embodiment of hardware implemented chunk based double bufferedwaveform data accumulation with deep memory storage of partialaccumulated records is now described. For convenience, this approach maybe denoted as method 2, although it should be noted that in someembodiments, method 2 may be considered to be a variant of method 1, asdescribed above with reference to FIG. 6.

In method 2 (which in some embodiments, may be considered an extensionof method 1 (of FIG. 6)), a portion of the deep memory of each bank maybe reserved for storing the bank's running bank sum, rather than sendingit out to another circuit or the host computer to catch and furtheraccumulate. Thus, for example, in some embodiments, the method of FIG. 6may (or the circuit may be further configured to) store the bank sums inreserved space in the first and/or second memory banks, and perform theaccumulation of the first and second bank sums into the runningaccumulation of the set of waveforms using the reserved space.

For cases where N is an even multiple of n, each bank may hold therunning sum for N/2 waveforms. A final sum of the two running sums mayproduce the accumulated record. Said another way, in one embodiment, toperform the above described accumulation of the first and second banksums into a running accumulation of the set of waveforms, the circuitmay be configured to store the bank sums in reserved space in the firstand/or second memory banks, where the accumulation of the first andsecond bank sums into a running accumulation of the set of waveforms isperformed using the reserved space.

To avoid losing resolution, the space allocated for the bank's runningsum of partial (bank) accumulated records may account for the fact thatthe number of bits per sample grows as the number of waveforms to besummed, N, grows.

This approach may eliminate secondary accumulator or the host forfurther accumulating the partial (bank) accumulated records producedeach time a bank completes a readout, and the corresponding memory forthe second round of summing. This approach may potentially addinter-record dead time to that of method 1 (with reference to FIGS.6-8B) if reading a second accumulated record running sum from memory andtransferring it across the bus as required in method 2 takes longer thanthe time required by the host or secondary circuit to sum the mostrecent bank sum from method 1 due to its increased bit resolution persample as a result of the secondary accumulation having been completedbefore potential bus transfer.

The most current accumulated record running sum may be available tohardware throughout the process, potentially divided across the twobanks. This may enable various additional functions or applications,such as a “building” display or other output from the device as the datapasses by on each bank switch.

The approach of method 2 may reduce the amount of deep memory availablefor raw waveform storage. For cases where the amount of storage requiredfor a single waveform represents a large percentage of the memoryavailable in a bank, this method might not be advisable due to thesignificant percentage impact this would have on how quickly the banksswitch and thus the memory accesses are able to reach peak memoryperformance and switching overhead is absorbed in this scenario.However, for the more common cases where hundreds or thousands or tensof thousands of waveforms are stored per bank, having one fewer waveformper bank does not meaningfully affect the technique's ability to reachan efficient operating point as the banks can simply switch slightlysooner.

Method 3: Accumulation and Storage in Alternating Memory Banks

The following describes embodiments of a method in which waveform dataare accumulated and stored in alternating memory banks, referred toherein as method 3 for convenience.

As digitizer sample rates get faster and resolution gets higher, theamount of memory required to store samples representing a given timeinterval of interest increases. Storing large numbers of raw waveforms,even in a cyclical manner described above with respect to methods 1 and2, becomes a luxury that can outstrip modern memory densities andtransfer rates. Perhaps due to the amount of storage required per unittime, it may become more desirable to optimize for the longest recordlength possible. In this context, prior methods may be less appealing oruseful.

FIG. 9: Flowchart of Another Method for Accumulation of Waveform Data inAlternating Memory Banks

FIG. 9 illustrates another method for accumulating waveform data inalternating memory banks, according to one embodiment. The method shownin FIG. 9 may be used in conjunction with any of the computer systems ordevices shown in the above Figures, e.g., variants of the digitizer ofFIG. 13, described below, among other devices. In various embodiments,some of the method elements shown may be performed concurrently, in adifferent order than shown, or may be omitted. Additional methodelements may also be performed as desired. As shown, this method mayoperate as follows.

First, in 902, a first subset of waveforms (to be accumulated) may bestored in (written to) a first memory bank, e.g., memory bank A.

In 904, a second subset of waveforms may be accumulated with the firstsubset of waveforms with a one to one correspondence, i.e., on a one toone basis, thereby generating a first accumulated waveform set, and eachwaveform of the accumulated waveform set may be stored in the secondmemory bank. Note that “one to one correspondence” in this context meansthat a first waveform of the first subset of waveforms is accumulatedwith a first waveform of the second subset of waveforms, a secondwaveform of the first subset of waveforms is accumulated with a secondwaveform of the second subset of waveforms, and so forth. In otherwords, each waveform of the first subset of waveforms is accumulatedwith a respective (corresponding) waveform of the second subset ofwaveforms.

In 906, a third subset of waveforms may be accumulated with the firstaccumulated waveform set with a one to one correspondence, therebygenerating a second accumulated waveform set, and storing each waveformof the accumulated waveform set in the first memory bank.

In 908, the accumulating and storing of 904 and 906 may be repeated oneor more times in an iterative manner for successive further second andthird subsets of the set of waveforms, thereby generating a finalaccumulated waveform set comprising a set of accumulated waveforms. Inother words, the method elements 904 and 906 may be performed for eachof successive further pairs of subsets of the set of waveforms until allwaveforms in the set of waveforms have been accumulated and stored (inthe first and second memory banks)

In one embodiment, the method may further include accumulating the finalaccumulated waveform set, thereby generating a final accumulatedwaveform. In other words, once all the corresponding waveforms in thedifferent subsets of the set of waveforms have been accumulatedrespectively, these accumulated waveforms may themselves be accumulatedto produce a single accumulated waveform, referred to as a finalaccumulated waveform. In various embodiments, this further accumulationmay be performed by (the circuit of) the digitizer, or by a hostcomputer.

For example, in one embodiment, the method may further includetransferring the final accumulated waveform set to a host computer usinga host computer bus and DMA, and storing the final accumulated waveformset in host computer memory, then accumulating, via the host computer,the final accumulated waveform set, thereby generating the finalaccumulated waveform.

Moreover, in some embodiments, the accumulating of the second subset ofwaveforms with the first subset of waveforms and the accumulating of thethird subset of waveforms with the first accumulated waveform set may beperformed via an accumulation process for each waveform. For at leastone of the waveforms, one or more properties of the waveform or of asideband signal associated with the waveform may be inspected (ordetermined), and the accumulation process may be dynamically modified(e.g., “on the fly”) based on the one or more properties.

FIGS. 10A-10I illustrate an exemplary embodiment of method 3, followingthe illustration conventions of FIGS. 7A-7I.

In one exemplary embodiment of this method, the first set of up to nwaveforms may be stored in (written to) bank A, as with the abovemethods. In some exemplary embodiments, n may be 1, meaning that onlyone waveform fits in a memory bank at a time. Using this method,multiple accumulated records N could be created in the digitizer on anon-continuous basis. For example, embodiments include n=1, and n>1.

For example, n=1 can be desirable for obtaining the longest waveformlength. An example of a case in which n>1 is useful is when it isdesirable to separate the incoming data into separate sums based oninformation that is not known until the waveform's arrival. While thiscase is not explicitly depicted in the figures which show sequentialstorage of the raw waveforms into memory, the methods shown in thefigures are accurate if n is taken to be equal to 1, and thus cover thisimportant case.

Using n>1 may be useful to accumulate waveforms into separateaccumulated records based on information that is not available a priori.This could be useful for acting on a marker that indicates whether thewaveform should go into one accumulated record or another. By allowingstorage of data for an accumulation of n accumulated records in progressin the hardware, arriving waveforms may be directed into particular“slots” in the memory banks. An embodiment with n=2 is envisioned where,at the time of the trigger, a digital input to the digitizer is drivenhigh or low by an external device to indicate whether the waveform to beacquired is associated with a particular unit under that is “good” or“bad.” For such an application, it might be useful to have separateaccumulated records for each type of unit under test to allow inspectionof differing characteristics between the two types of units under test.“Good” or “bad” units under test could come in any order, potentiallycausing multiple sequential waveforms to be sent to the same running sumand having no pre-defined N for either accumulated record at the time ofconfiguration.

These individual running sums move between corresponding locations inthe two banks via the summer. Each may move through the summer and besummed with the incoming waveform as upon arrival of a new waveformdestined for that running sum as indicated by the condition to definewhich waveforms are destined for which accumulated sum. This movementfrom bank to bank is independent of the location of the other runningsums. In this manner, multiple accumulated records can be produced ofvarying number of waveforms per accumulated record based on informationthat becomes available on the fly at the time of waveform arrival ratherthan by a preconfigured sequence.

FIGS. 10A-10I illustrate an embodiment of the method of FIG. 9 which,like that of FIG. 7A, involves acquiring multiple sets of n waveforms(waveforms 0 through n−1). In this embodiment n=N. FIG. 10A shows thatthe first raw waveform, waveform 0, is written to memory bank A. FIG.10B illustrates writing the second raw waveform, waveform 1, to memorybank A, while concurrently reading (a small portion of) waveform 0 frommemory bank A and writing the data to a local read buffer, specifically,local read buffer A(0), where the corresponding portion of the memorybank A is shown as clear or empty (which may or may not actually retainthe data). The local read buffer serves the purpose of overcoming anyread latency of the memory in bank A which might otherwise hamper timelyaccess to the previously stored waveform samples at the time of arrivalof the corresponding samples in the arriving waveform. Alternatively, toavoid taxing the memory interface with the additional read of recentlywritten data, the small portion of data to be stored in the local readbuffer can be written either to both locations or only to the local readbuffer, as convenient. An additional alternative would be to buffer theincoming waveform data as much as necessary to overcome the read latencyof the memory.

FIG. 10C illustrates completion of the data writes to bank A (of thecurrent set of n waveforms), where the data of raw waveform n−1 is shownbeing stored in the bank, which subsequently holds waveforms 0 throughn−1. Note that each of these is the start of an accumulated record. Notethat the portion of waveform 0 data is still stored in the local readbuffer and that each subsequently stored waveform may have a similarlocal read buffer A into which (a portion of) waveform 0 from memorybank A is written.

Now, when waveforms [n, 2*n−1] arrive (or begin arriving), rather thanstoring them in raw form to bank B as with method 1, the waveformsstored in bank A may be read out and summed with the incoming waveforms.In this case, waveform 0 may be summed with waveform n, 1 with n+1, andso forth, as each new waveform arrives. The resulting running sums maythen be stored into bank B at locations corresponding to the location inbank A from which the previously store waveform input to the sum came.The same prefetching happens on data as it enters memory bank B by anyof the methods previously described.

The figures as drawn do not depict a secondary accumulation operationsuch that the N sums are combined into a single accumulated record. Thisis the case where n/=N and is envisioned as part of method, using asecondary accumulator as described in method 1.

FIG. 10D illustrates such an accumulation of waveform 0 data from bank Awith incoming raw waveform n, with the result stored in bank B, asindicated by the left most fill of bank B, after which the first “slot”in bank B holds the running sum (partial accumulation) of waveform0+waveform n. Note that in this embodiment, the previously storedwaveform data is all passed through the local read buffer. This is notnecessarily the case in all embodiments where the local read buffermight only serve the purpose of overcoming any read latency of thememory in bank A and then is subsequently bypassed.

FIG. 10E shows the next accumulation, where a portion of data forwaveform 1 is stored in the local read buffer, then summed with incomingraw waveform n+1, with the resulting sum stored in memory bank B. Notethat concurrent with this accumulation, a first portion of the prioraccumulated waveform data which was stored in the first “slot” of bank Bis shown being stored in another local read buffer, specifically, localread buffer B(0). FIG. 10F shows accumulation of raw waveform 2n−1 withthe last previously stored waveform data of bank A (via local readbuffer A(n−1)), and storing the resulting sum into the last waveformslot of bank B after which the last “slot” in bank B holds the runningsum (partial accumulation) of waveform n−1+waveform 2*n−1.

Then, when waveforms [2*n, 3*2−1] arrive, the running sum stored in bankB may be read out and summed with the incoming waveforms, via thecorresponding local read buffer B. FIG. 10G specifically illustrates theaccumulation or summing of incoming raw waveform 2n with running sumdata in bank B, specifically, the previously calculated sum of waveforms0+waveform n, via local read buffer B(0) summed with waveform 2n.

Similarly, FIG. 10H illustrates the accumulation or summing of incomingraw waveform 2n+1 with the running sum of waveform 1 and waveform n+1previously stored in bank B, via local read buffer B(1). FIG. 10Gfurther shows storing of (a portion of) the running sum data in bank Ainto local read buffer A(0), e.g., in preparation for subsequentaccumulation of the bank A (partial accumulation) waveform data.

FIG. 10I shows accumulation of incoming raw waveform 3n−1 with therunning sum data stored in the last slot of bank B, specifically, therunning sum data of waveform n−1 and waveform 2n−1, which was previouslystored in bank B, via local read buffer B(n−1). Consequently, after thisstage of accumulation, bank A may contain running sums of waveforms(partial accumulation) of [(waveform 0+waveform n+waveform 2n] . . .[waveform n−1+waveform 2n−1+waveform 3n−1]. Note, however, that aportion of the first running sum waveform data may be stored in localread buffer A(0), as shown. The alternation between memory banks maycontinue as shown for further acquired raw waveforms. For cases where Nis a whole (integer) multiple of n, the accumulated record is in thememory bank which accepted the final sum.

Again, note that special provisions may be required for cases when N isnot a whole (integer) multiple of n, e.g., either transferring therunning sum for the “missing” waveforms to the other memory such thatthe final sum exists in one bank, or by configuring the readout logic totake into account that the two separate banks each contain part of theaccumulated record.

In one embodiment, to avoid losing resolution, this method may requireincreasing the number of bits per sample as the number of waveforms tobe summed, N, grows. This may further reduce the number of waveformsthat can be stored per memory bank, again motivating an implementationwhere n is 1. In this case, this method enables waveform lengths forwhich the accumulated record can be stored in half of the total deepmemory.

In a basic embodiment of this method (method 3), some degree of burdenmay be placed on each memory bank to interleave reads and writessuccessfully in order to overcome memory latency and be ready to provideinputs to the accumulator when waveform n (and the first waveform ofeach bank switch) arrives. Enough data from waveform 0 needs to havebeen successfully read out from bank A into the local read buffer Awhile subsequent data was being written to the bank in order to overcomethe latency of the memory and have data queued up for the accumulatorwhen the first sample of waveform n arrives. Depending on how muchthroughput margin is available on the memory interface beyond what isrequired to keep up with the incoming acquisition data and on the“penalty” (e.g., cost) for switching between reads and writes associatedwith the memory technology in use, this may be problematic for someimplementations. However, the burden is usually small, especially sincethe focus for this implementation may often be long record lengths.

A variety of extensions to method 3 are possible. As illustrated inFIGS. 10A-10I, in some embodiments, enough data from waveform 0 waspulled into a local read buffer (A or B) situated between the deepmemory and the accumulator in order to overcome potential memorylatency. Doing so may prevent missed or offset waveforms during bankswitching operations within or between accumulated records. This buffermay further hide memory architecture performance hiccups such as DRAMrefresh cycles. Rather than burdening the memory interface with the needto read data during the ongoing writes of waveforms [0, n−1], however,one embodiment simply stores enough data from waveform 0 for this needin a local read buffer as it arrives rather than writing to and readingback from the deep memory. In this case, that particular data may notnecessarily be sent to be stored to the deep memory at all.

As also indicated above, in some embodiments, the local read buffer maybe dedicated per bank, or, alternatively, may be implemented as a singleunit shared between the banks, depending on various tradeoffs, includingwhether the implementation requires handling memory architectureperformance hiccups or compact size.

Note that in various embodiments of method 3, the most currentaccumulated record running sum may be available to hardware throughoutthe process, potentially divided across the two banks, which may enableapplications such as a “building” display or other output from thedevice as the data passes by on each bank switch. Moreover, embodimentsof this approach may avoid development of different addressing schemesfor reading and writing. Finally, this method may be suitable foroptimizing for longest record length.

Method 4: Accumulation and Storage in Alternating Memory Banks: VariantApproach

The following method is referred to as method 4 for convenience. Inembodiments of this method, both banks of memory may be used to acquirea single waveform, thus making n=½. Note that this maximizes thewaveform length relative to all other methods described herein. Whenwriting data to memory, the memory controller may alternate betweenbanks by writing a chunk of the waveform to bank A and then switching towrite the next chunk of the waveform to bank B. The size of the waveformchunk written to each bank between switches may depend on the memoryarchitecture used, but may be designed to optimize read and writebandwidth. The waveform length may be an even multiple of the selectedwaveform chunk size.

FIG. 11: Flowchart of a Method for Accumulation and Storage of WaveformData in Alternating Memory Banks

FIG. 11 illustrates a method for accumulating and storing waveform datain alternating memory banks, according to one embodiment. The methodshown in FIG. 9 may be used in conjunction with any of the computersystems or devices shown in the above Figures, e.g., variants of thedigitizer of FIG. 13, described below, among other devices. In theexemplary embodiment described, the device is a digitizer that includesa circuit, a first memory bank, coupled to the circuit, and a secondmemory bank, coupled to the circuit, where the circuit is configured toperform the method. In various embodiments, some of the method elementsshown may be performed concurrently, in a different order than shown, ormay be omitted. Additional method elements may also be performed asdesired. As shown, this method may operate as follows.

First, in 1102, a first chunk of a first waveform of a first set ofwaveforms may be stored in a first memory buffer of the first memorybank, and a second chunk of the first waveform may be stored in a firstmemory buffer of the second memory bank.

In 1104, the storing of 1102 may be repeated respectively for successivepairs of further chunks of the first waveform, thereby storing the firstwaveform in chunks alternating between successive buffers in the firstand second memory banks

In 1106, concurrently with 1104, the first chunk stored in first memorybuffer of the first memory bank may be transferred to a first FIFO(i.e., queue or other FIFO structure), and the second chunk stored inthe first memory buffer of the second memory bank may be transferred toa second FIFO. In other words, while the successive pairs are beingstored in the first and second memory banks, the first and second chunksmay be retrieved from the respective first memory buffers of the firstand second memory banks, and respectively stored in the first and secondFIFOs.

In 1108, a first chunk of a second waveform of the first set ofwaveforms may be accumulated with the first chunk of the first waveformstored in the first FIFO and stored in the first memory buffer of thefirst memory bank.

In 1110, a second chunk of the second waveform may be accumulated withthe second chunk of the first waveform stored in the second FIFO and(the accumulation) stored in the first memory buffer of the secondmemory bank, and concurrently, a first chunk of a first successive pairof the further chunks of the first waveform may be transferred from asecond buffer of the first memory bank into the first FIFO.

In 1112, a first chunk of a first successive pair of further chunks ofthe second waveform may be accumulated with the first chunk of the firstsuccessive pair of the further chunks of the first waveform stored inthe first FIFO, and (the accumulation) stores in the second memorybuffer of the first memory bank.

In 1114, concurrently with 1112, a second chunk of the first successivepair of further chunks of the first waveform may be transferred from thesecond buffer of the second memory bank into the second FIFO.

In 1116, method elements 1110-1114 may be repeated (performed) forfurther successive pairs of chunks of the second waveform usingrespective successive buffers of the first and second memory banks,thereby generating an accumulated record of the first and secondwaveforms.

In 1118, method elements 1108-1116 may be repeated (performed) forsuccessive further waveforms of the first set of waveforms, therebygenerating an accumulated record of all waveforms of the first set ofwaveforms.

Thus, embodiments of the above method may utilize chunk based waveformaccumulation in alternating memory banks to efficiently accumulatewaveform data.

FIGS. 12A-12H illustrate an exemplary embodiment of the method of FIG.11, where waveform data are accumulated in a chunk wise manner usingalternating memory banks

When the first record is acquired, the data may be written as received,alternating between memory banks A and B by the defined waveform chunk,as illustrated in FIGS. 12A, 12B and 12C, wherein successive chunks(e.g., chunk 0, chunk 1, chunk 2, as shown, and so forth) are written toa first memory bank, memory bank A (MBA), and to a second memory bank,memory bank B (MBB) in alternative fashion, i.e., switching back andforth between them for successive writes. In some embodiments, as thefirst record acquisition is in progress, reads to the beginning of thebuffer may be made, pre-fetching the previously written data and storingit in a local FIFO. At this point, the method may be writing to one bankof memory and at the same time reading from the other, as illustrated inFIGS. 12D and 12E. In other words, as shown in FIG. 12D, the previouslystored data of waveform 0, chunk 0 (see FIGS. 12A/12B) may be read fromMBA and written to a first FIFO (FF1) while waveform 0, chunk 3 is beingwritten to MBB. Subsequently, per FIG. 12E, the previously stored dataof waveform 0, chunk 1, is read from MBB and written to a second FIFO(FF2) while waveform 0, chunk 4 is being written to MBA.

As the second waveform is acquired, the pre-fetched chunks may be usedto calculate the accumulation of the waveform chunk previously acquiredwith the new one, by adding it to the corresponding waveform chunks ofthe new waveform acquired and the result data may be written in the samefashion as the first waveform chunk, effectively overwriting old data.In other words, the first chunk of the accumulated result is written tomemory bank A, and the second chunk to bank B and so on. From this pointon any receipt of a new waveform chunk may trigger a (previously stored)waveform chunk to be read from memory, as illustrated in FIGS. 12F, 12Gand 12H. In other words, as shown in FIG. 12F, incoming waveform 1,chuck 0, is accumulated (or summed) with the waveform 0, chunk 0 data inFF1, and stored in MBA (top slot, as shown). Similarly, per FIG. 12G,while waveform 0, chunk 2, is read from MBA and written to FF1, thewaveform 0, chunk 1, data that was stored in FF2 in FIG. 12E isaccumulated with incoming waveform 1, chunk 1, data and stored in MBB(top slot, as shown). Then, per FIG. 12H, the method may further readpreviously stored waveform 0, chunk 3, from (the second slot of) MBB andwritten to FF2, while incoming waveform 1, chunk 2, data are accumulatedwith waveform 0, chunk 2, data from FF1 and stored in (the second slotof) MBA. Note that at the end of each waveform (i.e., after eachwaveform has been acquired and accumulated), the contents of memory maythus reflect the accumulated waveform up to that point. This alternatingread/accumulate/write process may be repeated in an iterative manneruntil all the waveforms of the set have been accumulated.

Further Exemplary Embodiments

Further regarding the method of FIG. 11, in some embodiments, oncemethod element 1118 has been performed, the first FIFO may contain afirst chunk of the accumulated record of all waveforms of the first setof waveforms, the second FIFO may be empty, and remaining chunks of theaccumulated record of all waveforms of the first set of waveforms may becontained in the first and second memory banks in interleaved fashion.The method may further store a first chunk of a first waveform of asecond set of waveforms in the first memory buffer of the first memorybank, and concurrently transfer the second chunk of the accumulatedrecord of all waveforms of the first set of waveforms stored in thefirst buffer of the second memory bank to the second FIFO. Additionally,concurrently with storing the first chunk and transferring the secondchunk, the method may transfer the first chunk of the accumulated recordof all waveforms of the first set of waveforms stored in the first FIFOto a high speed serial interface (HSSI), as illustrated in an exemplarymanner in FIGS. 14A-14D, described below.

The method may also store a second chunk of a first waveform of thesecond set of waveforms in the first memory buffer of the second memorybank, and concurrently transfer a first chunk of a first successive pairof the further chunks of the accumulated record of all waveforms of thefirst set of waveforms stored in a successive buffer in the first memorybank to the first FIFO. Concurrently with storing the second chunk andtransferring the first chunk (of the first successive pair of thefurther chunks of the accumulated record of all waveforms of the firstset of waveforms stored in a successive buffer in the first memory bank)the method may transfer the second chunk of the accumulated record ofall waveforms of the first set of waveforms stored in the second FIFO tothe HSSI, and may repeat the above method elements respectively forsuccessive pairs of further chunks of the first waveform of the secondset of waveforms, thereby storing the first waveform in chunks insuccessive buffers in the first and second memory banks in alternatingfashion, storing the first chunk of the first waveform of the second setof waveforms in the first FIFO and transferring all the chunks of theaccumulated record of all waveforms of the first set of waveforms to theHSSI.

At this point, the first FIFO may store a first chunk of first waveformof a second set of waveforms, the second FIFO may be empty, andremaining chunks of the first waveform of a second set of waveforms maybe stored (contained) in the first and second memory banks ininterleaved fashion, and in some embodiments, the method may accumulatea first chunk of a second waveform of the second set of waveforms withthe first chunk of the first waveform stored in the first FIFO and store(the accumulated first chunks) in the first memory buffer of the firstmemory bank, and may concurrently with transfer the second chunk of thefirst waveform of the second set of waveforms stored in the first memorybuffer of the second memory bank to the second FIFO. The method may alsoaccumulate a second chunk of the second waveform with the second chunkof the first waveform stored in the second FIFO and store in the firstmemory buffer of the second memory bank, and concurrently transfer afirst chunk of a first successive pair of the further chunks of thefirst waveform from a second buffer of the first memory bank into thefirst FIFO.

The above chunk-wise accumulation of the second waveform with the firstwaveform may be repeated for further successive pairs of chunks of thesecond waveform using respective successive buffers of the first andsecond memory banks, thereby generating an accumulated record of thefirst and second waveforms. Similarly, the above (including therepeating) may itself be repeated for successive further waveforms ofthe second set of waveforms, thereby generating an accumulated record ofall waveforms of the first set of waveforms.

As noted above, in various embodiments, in various embodiments, thecircuit of the digitizer that performs the above method elements mayinclude or be a programmable hardware element or an application specificintegrated circuit (ASIC), or a combination of the two. In oneembodiment, the first and second memory banks (of the digitizer) may beintegrated into the circuit. Alternatively, in other embodiments, thefirst and second memory banks may be external to the circuit.

Using embodiments of this method (method 4/method of FIG. 11), it may bepossible to have virtually (or substantially) zero dead time betweenwaveforms. Furthermore, it may be possible to have substantially zerodead time between accumulated waveforms by taking advantage of the readoperation that would normally take place but is not necessary whenstarting a new accumulation operation to stream the data to a differentmemory or the host system (see path labeled “To HSSI” in FIG. 13,described below). As used herein, the term “substantially” may indicatedifferent levels of tolerance, based on the particular application orcase being considered. For example, in some embodiments, it may mean“less than 0.1%” of the accumulation time for a waveform, while in otherembodiments, it may mean “less than 0.2%”, “less than 1%”, “less than5%”, “less than 10%”, and so forth, as desired.

In some embodiments, method 4 may require that the memory can sustainthe sum of the read and write operations. The bandwidth requirement onthe memory may be required to take into account the overhead ofswitching between read and write operations. The local FIFOs may(should) be chosen of an appropriate size to compensate for the latencyof the memory read operations.

Various embodiments of method 4 may maximize the available memory toextend the possible waveform length, which may be critical as samplerates increase. Additionally, embodiments of method 4 may allow for zerodead time between waveforms on an accumulation operation by pre-fetchingdata from memory and storing it in local FIFOs, and may allow for zerodead time between accumulation operations by streaming the result to asecond memory or host interface while the first waveform of a newaccumulation operation is acquired. This operation may require a streaminterface that matches the input and output bandwidth to local storage.The average bandwidth may be divided by the number of waveformsaccumulated, which may allow the transfer from local storage to hostmemory on a slower system bus. Embodiments of method 4 may allow forstreaming of partial results with the streaming strategy describedabove.

FIG. 13—Block Diagram of Exemplary Digitizer

FIG. 13 is a high level block diagram representing an exemplarydigitizer, according to one embodiment. The exemplary digitizer of FIG.13 may be suitable for implementing embodiments of method 4, describedabove.

As shown, the digitizer may include an ADC (Analog to digitalconverter), for digitizing received analog waveform signals, as well avarious temporary data registers, R1, R2, and R3 (so labeled), which maybe used to pipeline waveform data a number of cycles with the intentionof correctly aligning phases of different streams of data, e.g.,aligning the data from the ADC with the stream of data coming from thememory banks As also shown, interposed between R1 and R2 is a summingnode, indicated by a summation symbol 1, which, in a digitizer thatprocesses N samples in parallel, may represent N parallel fast adders. Ade-MUX (de-multiplexer) process or element, De-MUX, is shown interposedbetween R2 and memory banks A and B, each of which is further coupled toa respective FIFO (first in/first out) component. Output data from thesumming node may be written to memory bank A and memory bank B,alternating in units of a waveform chunk.

The memory banks A and B represent the memory used to store theaccumulated waveform. Usually this memory is single port; however, foran ASIC implementation, the input and output data paths may beseparated. Practical implementations of the memory may impose a latencyconstraint, where the latency is the time it takes for an operation totake place after it has been requested. In particular, the latency ofread operations may be an important consideration.

The FIFOs shown are temporary storage for read data from the respectivememory banks. In order to compensate for the memory latency, therequired data may need to be read ahead of time and stored in theseFIFOs. In some embodiments, the FIFOs may be implemented withflip-flops, although other implementations may be used as desired.

As FIG. 13 also shows, a (e.g., first) multiplexer (MUX) may be coupledto the summing node. When the first record of an accumulated waveform isacquired, it needs to be stored without modification (other thanpossibly adjusting for the number of bits of the sample representation).This is represented in the diagram as summing with zero. On subsequentrecords, the current accumulated result may be summed with the incomingdata to calculate the new accumulated result. Because the data arestored in both banks of memory, alternating in units of waveform chunks,a second multiplexer may alternate accordingly to get the correct datafrom the FIFOs at the output of the memory banks

Note that the output of R3 is shown being provided to a High SpeedSerial Interface (HSSI). As mentioned in the description of method 4,the output of the second multiplexer represents the latest accumulatedresult (not including the current waveform). This fact allows method 4to stream partial results as needed to an external device (such as anFPGA with memory to hold the results). In addition, if theimplementation of the (3 to 1) MUX is such that the first level selectsbetween the two FIFOs and the second level selects between the output ofthe first mux and zero, and the output to HSSI is taken from the firstmux level, then it is possible to read the final result of the waveformaccumulation at the same time as the first record of the nextaccumulation operation is written to memory. This may reduce the deadtime between accumulation operations to zero, or close to zero.

The HSSI port may be connected to an ASIC or FPGA (or other programmablehardware element) with enough internal/external memory to hold the dataand sustain the bandwidth of the HS SI stream. This hardware may then beable to stream this data to the host system through the system bus. Ifthe compression of the data is high enough this method may provide datato the host as fast as possible with (effectively) zerointer-accumulation operation dead time.

FIGS. 14A-14D illustrate an embodiment wherein, after accumulating afirst waveform set, the method starts the accumulation of a secondwaveform set while concurrently streaming the result of the accumulationof the waveform set through an HSSI port, e.g., as per the exemplarydigitizer of FIG. 13.

FIG. 14A illustrates the state of the system after the accumulation ofthe first waveform set is complete, according to one exemplaryembodiment. The first chunk of the accumulated waveform record is storedin the first FIFO, FF1. This is a result of the pre-fetch operationperformed by the system when the last chunk of the last waveform of thewaveform set was stored in the second memory bank, MBB.

FIG. 14B shows the first chunk of the first waveform of the secondwaveform set being stored in the first buffer of the first memory bank.Concurrently the second chunk of the accumulated record is copied to thesecond FIFO, and concurrently the first chunk of the accumulated recordis streamed to the HSSI.

FIG. 14C shows the second chunk of the first waveform of the secondwaveform set being stored in the first buffer of the second memory bank.Concurrently the third chunk of the accumulated record is copied to thefirst FIFO, and concurrently the second chunk of the accumulated recordis streamed to the HSSI.

FIG. 14D shows the third chunk of the first waveform of the secondwaveform set being stored in the second buffer of the first memory bank.Concurrently the fourth chunk of the accumulated record is copied to thesecond FIFO, and concurrently the third chunk of the accumulated recordis streamed to the HSSI.

This process may repeat until the last chunk of the first waveform ofthe second waveform set has been stored in the memory banks. At thispoint the complete accumulated record has been streamed to the HSSI, andthe first FIFO holds now the first chunk of the first waveform of thesecond waveform set. The system is ready to receive the second waveformof the second waveform set and start the accumulation process again.

Although the embodiments above have been described in considerabledetail, numerous variations and modifications will become apparent tothose skilled in the art once the above disclosure is fully appreciated.It is intended that the following claims be interpreted to embrace allsuch variations and modifications.

We claim:
 1. A system for accumulating waveform data, comprising: adigitizer, comprising: a circuit; a first memory bank, coupled to thecircuit; and a second memory bank, coupled to the circuit; wherein thecircuit is configured to: a) store a first chunk of a first waveform ofa first set of waveforms in a first memory buffer of the first memorybank; b) store a second chunk of the first waveform in a first memorybuffer of the second memory bank; c) repeat a)-b) respectively forsuccessive pairs of further chunks of the first waveform, therebystoring the first waveform in chunks alternating between successivebuffers in the first and second memory banks; d) concurrently with c),transfer the first chunk stored in first memory buffer of the firstmemory bank to a first FIFO; e) concurrently with c), transfer thesecond chunk stored in the first memory buffer of the second memory bankto a second FIFO; f) accumulate a first chunk of a second waveform ofthe first set of waveforms with the first chunk of the first waveformstored in the first FIFO and store in the first memory buffer of thefirst memory bank; g) accumulate a second chunk of the second waveformwith the second chunk of the first waveform stored in the second FIFOand store in the first memory buffer of the second memory bank; h)concurrently with g), transfer a first chunk of a first successive pairof the further chunks of the first waveform from a second buffer of thefirst memory bank into the first FIFO; i) accumulate a first chunk of afirst successive pair of further chunks of the second waveform with thefirst chunk of the first successive pair of the further chunks of thefirst waveform stored in the first FIFO and store in the second memorybuffer of the first memory bank; j) concurrently with i), transfer asecond chunk of the first successive pair of further chunks of the firstwaveform from the second buffer of the second memory bank into thesecond FIFO; k) repeat g)-j) for further successive pairs of chunks ofthe second waveform using respective successive buffers of the first andsecond memory banks, thereby generating an accumulated record of thefirst and second waveforms; l) repeat f)-k) for successive furtherwaveforms of the first set of waveforms, thereby generating anaccumulated record of all waveforms of the first set of waveforms. 2.The system of claim 1, wherein, after l), the first FIFO contains afirst chunk of the accumulated record of all waveforms of the first setof waveforms, the second FIFO is empty, and remaining chunks of theaccumulated record of all waveforms of the first set of waveforms arecontained in the first and second memory banks in interleaved fashion,and wherein the circuit is further configured to: m) store a first chunkof a first waveform of a second set of waveforms in the first memorybuffer of the first memory bank; n) concurrently with m), transfer thesecond chunk of the accumulated record of all waveforms of the first setof waveforms stored in the first buffer of the second memory bank to thesecond FIFO; o) concurrently with m) and n), transfer the first chunk ofthe accumulated record of all waveforms of the first set of waveformsstored in the first FIFO to a high speed serial interface (HSSI); p)store a second chunk of a first waveform of the second set of waveformsin the first memory buffer of the second memory bank; q) concurrentlywith p), transfer a first chunk of a first successive pair of thefurther chunks of the accumulated record of all waveforms of the firstset of waveforms stored in a successive buffer in the first memory bankto the first FIFO; r) concurrently with p) and q), transfer the secondchunk of the accumulated record of all waveforms of the first set ofwaveforms stored in the second FIFO to the HSSI; and s) repeat m)-r)respectively for successive pairs of further chunks of the firstwaveform of the second set of waveforms, thereby storing the firstwaveform in chunks in successive buffers in the first and second memorybanks in alternating fashion, storing the first chunk of the firstwaveform of the second set of waveforms in the first FIFO andtransferring all the chunks of the accumulated record of all waveformsof the first set of waveforms to the HSSI.
 3. The system of claim 2,wherein, after s), the first FIFO stores a first chunk of first waveformof a second set of waveforms, the second FIFO is empty, and remainingchunks of the first waveform of a second set of waveforms are stored inthe first and second memory banks in interleaved fashion, and where thecircuit is further configured to: t) accumulate a first chunk of asecond waveform of the second set of waveforms with the first chunk ofthe first waveform stored in the first FIFO and store in the firstmemory buffer of the first memory bank; u) concurrently with t) transferthe second chunk of the first waveform of the second set of waveformsstored in the first memory buffer of the second memory bank to thesecond FIFO v) accumulate a second chunk of the second waveform with thesecond chunk of the first waveform stored in the second FIFO and storein the first memory buffer of the second memory bank; w) concurrentlywith v), transfer a first chunk of a first successive pair of thefurther chunks of the first waveform from a second buffer of the firstmemory bank into the first FIFO; x) repeat t)-w) for further successivepairs of chunks of the second waveform using respective successivebuffers of the first and second memory banks, thereby generating anaccumulated record of the first and second waveforms; y) repeat t)-x)for successive further waveforms of the second set of waveforms, therebygenerating an accumulated record of all waveforms of the first set ofwaveforms.
 4. The system of claim 1, wherein the circuit comprises aprogrammable hardware element.
 5. The system of claim 4, wherein thefirst and second memory banks are integrated into the programmablehardware element.
 6. The system of claim 1, wherein the circuitcomprises an application specific integrated circuit (ASIC).
 7. Thesystem of claim 6, wherein the first and second memory banks areintegrated into the ASIC.
 8. The system of claim 1, wherein the firstand second memory banks are integrated into the circuit.
 9. The systemof claim 1, wherein the first and second memory banks are external tothe circuit.
 10. A hardware implemented method for accumulating waveformdata, comprising: a digitizer performing: a) storing a first chunk of afirst waveform of a first set of waveforms in a first memory buffer of afirst memory bank of the digitizer; b) storing a second chunk of thefirst waveform in a first memory buffer of a second memory bank of thedigitizer; c) repeating a)-b) respectively for successive pairs offurther chunks of the first waveform, thereby storing the first waveformin chunks alternating between successive buffers in the first and secondmemory banks; d) concurrently with c), transferring the first chunkstored in first memory buffer of the first memory bank to a first FIFO;e) concurrently with c), transferring the second chunk stored in thefirst memory buffer of the second memory bank to a second FIFO; f)accumulating a first chunk of a second waveform of the first set ofwaveforms with the first chunk of the first waveform stored in the firstFIFO and store in the first memory buffer of the first memory bank; g)accumulating a second chunk of the second waveform with the second chunkof the first waveform stored in the second FIFO and store in the firstmemory buffer of the second memory bank; h) concurrently with g),transferring a first chunk of a first successive pair of the furtherchunks of the first waveform from a second buffer of the first memorybank into the first FIFO; i) accumulating a first chunk of a firstsuccessive pair of further chunks of the second waveform with the firstchunk of the first successive pair of the further chunks of the firstwaveform stored in the first FIFO and store in the second memory bufferof the first memory bank; j) concurrently with i), transferring a secondchunk of the first successive pair of further chunks of the firstwaveform from the second buffer of the second memory bank into thesecond FIFO; k) repeating g)-j) for further successive pairs of chunksof the second waveform using respective successive buffers of the firstand second memory banks, thereby generating an accumulated record of thefirst and second waveforms; l) repeating f)-k) for successive furtherwaveforms of the first set of waveforms, thereby generating anaccumulated record of all waveforms of the first set of waveforms. 11.The method of claim 10, wherein, after l), the first FIFO contains afirst chunk of the accumulated record of all waveforms of the first setof waveforms, the second FIFO is empty, and remaining chunks of theaccumulated record of all waveforms of the first set of waveforms arecontained in the first and second memory banks in interleaved fashion,the method further comprising: the digitizer performing: m) storing afirst chunk of a first waveform of a second set of waveforms in thefirst memory buffer of the first memory bank; n) concurrent with m),transferring the second chunk of the accumulated record of all waveformsof the first set of waveforms stored in the first buffer of the secondmemory bank to the second FIFO; o) concurrent with m) and n),transferring the first chunk of the accumulated record of all waveformsof the first set of waveforms stored in the first FIFO to a high speedserial interface (HSSI); p) storing a second chunk of a first waveformof the second set of waveforms in the first memory buffer of the secondmemory bank; q) concurrently with p), transferring a first chunk of afirst successive pair of the further chunks of the accumulated record ofall waveforms of the first set of waveforms stored in a successivebuffer in the first memory bank to the first FIFO; r) concurrently withp) and q), transferring the second chunk of the accumulated record ofall waveforms of the first set of waveforms stored in the second FIFO tothe HSSI; s) repeating m)-r) respectively for successive pairs offurther chunks of the first waveform of the second set of waveforms,thereby storing the first waveform in chunks in successive buffers inthe first and second memory banks in alternating fashion, storing thefirst chunk of the first waveform of the second set of waveforms in thefirst FIFO and transferring all the chunks of the accumulated record ofall waveforms of the first set of waveforms to the HSSI.
 12. The methodof claim 11, wherein, after s), the first FIFO stores a first chunk offirst waveform of a second set of waveforms, the second FIFO is empty,and remaining chunks of the first waveform of a second set of waveformsare stored in the first and second memory banks in interleaved fashion,the method further comprising: the digitizer performing: t) accumulatinga first chunk of a second waveform of the second set of waveforms withthe first chunk of the first waveform stored in the first FIFO and storein the first memory buffer of the first memory bank; u) concurrentlywith t) transferring the second chunk of the first waveform of thesecond set of waveforms stored in the first memory buffer of the secondmemory bank to the second FIFO v) accumulating a second chunk of thesecond waveform with the second chunk of the first waveform stored inthe second FIFO and store it in the first memory buffer of the secondmemory bank; w) concurrently with v), transferring a first chunk of afirst successive pair of the further chunks of the first waveform from asecond buffer of the first memory bank into the first FIFO; x) repeatingt)-w) for further successive pairs of chunks of the second waveformusing respective successive buffers of the first and second memorybanks, thereby generating an accumulated record of the first and secondwaveforms; y) repeating t)-x) for successive further waveforms of thesecond set of waveforms, thereby generating an accumulated record of allwaveforms of the first set of waveforms.
 13. The method of claim 10,wherein a)-l) are performed by a circuit of the digitizer.
 14. Themethod of claim 13, wherein the circuit comprises a programmablehardware element.
 15. The method of claim 14, wherein the first andsecond memory banks are integrated into the programmable hardwareelement.
 16. The method of claim 13, wherein the circuit comprises anapplication specific integrated circuit (ASIC).
 17. The method of claim16, wherein the first and second memory banks are integrated into theASIC.
 18. The method of claim 13, wherein the first and second memorybanks are integrated into the circuit.
 19. The method of claim 13,wherein the first and second memory banks are external to the circuit.